/**
 * Description:
 * Class Name:BufferTest
 * Date:2022/5/3 16:50
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第15章_输入输出._15_9_NIO._15_9_2_使用Buffer;

import java.nio.CharBuffer;

public class BufferTest {
    public static void main(String[] args) {
        // 创建Buffer
        CharBuffer buff = CharBuffer.allocate(8);                                           // ①
        System.out.println("capacity：" + buff.capacity());
        System.out.println("limit：" + buff.limit());
        System.out.println("position：" + buff.position());

        // 放入元素
        buff.put('a');
        buff.put('b');
        buff.put('c');                                                                      // ②
        System.out.println("加入3个元素后，position = " + buff.position());

        // 调用flip()方法
        buff.flip();                                                                        // ③
        System.out.println("执行flip()后，limit = " + buff.limit() + "；position = " + buff.position());

        // 取出第一个元素
        System.out.println("第一个元素（position = 0）：" + buff.get());                        // ④
        System.out.println("取出一个元素后，position = " + buff.position());

        // 调用clear方法
        buff.clear();                                                                       // ⑤
        System.out.println("执行clear()后，limit = " + buff.limit());
        System.out.println("执行clear()后，position = " + buff.position());
        System.out.println("执行clear()后，缓冲区并没有被清除， 第3个元素为：" + buff.get(2));      // ⑥
        System.out.println("执行绝对读取后，position = " + buff.position());

    }
}
//capacity：8
//limit：8
//position：0
//加入3个元素后，position = 3
//执行flip()后，limit = 3；position = 0
//第一个元素（position = 0）：a
//取出一个元素后，position = 1
//执行clear()后，limit = 8
//执行clear()后，position = 0
//执行clear()后，缓冲区并没有被清除， 第3个元素为：c
//执行绝对读取后，position = 0